-- 硬件初始化
module(..., package.seeall)

width = 240
height = 240

-- lcd 初始化
function init()
    local para1 = {
        width = width, -- 分辨率宽度，128像素；用户根据屏的参数自行修改
        height = height, -- 分辨率高度，160像素；用户根据屏的参数自行修改
        bpp = 16, -- 位深度，彩屏仅支持16位
        bus = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口，不可修改
        xoffset = 0, -- X轴偏移
        yoffset = 0, -- Y轴偏移
        freq = 13000000, -- spi时钟频率，支持110K到13M（即110000到13000000）之间的整数（包含110000和13000000）
        pinrst = pio.P0_6, -- reset，复位引脚
        pinrs = pio.P0_1, -- rs，命令/数据选择引脚
        -- 初始化命令
        -- 前两个字节表示类型：0001表示延时，0000或者0002表示命令，0003表示数据
        -- 延时类型：后两个字节表示延时时间（单位毫秒）
        -- 命令类型：后两个字节命令的值
        -- 数据类型：后两个字节数据的值
        initcmd = {
            0xfe, 0xef, 0xb3, 0x0030003, -- 0x21,--反显
            0x36, 0x0030048, -- 0x0030088,--上下颠倒
            0x3a, 0x0030005, 0xb4, 0x0030021, 0xF0, 0x003002d, 0x0030054,
            0x0030024, 0x0030061, 0x00300ab, 0x003002e, 0x003002f, 0x0030000,
            0x0030020, 0x0030010, 0x0030010, 0x0030017, 0x0030013, 0x003000f,
            0xF1, 0x0030002, 0x0030022, 0x0030025, 0x0030035, 0x00300a8,
            0x0030008, 0x0030008, 0x0030000, 0x0030000, 0x0030009, 0x0030009,
            0x0030017, 0x0030018, 0x003000f, 0xfe, 0xff, 0x11, 0x010078, 0x29
        },
        -- 休眠命令
        sleepcmd = {0x00020010},
        -- 唤醒命令
        wakecmd = {0x00020011}
    }
    local para = {
        width   = 240              , -- 分辨率宽度，128像素；用户根据屏的参数自行修改
        height  = 240              , -- 分辨率高度，128像素；用户根据屏的参数自行修改
        bpp     = 16               , -- 位深度，彩屏仅支持16位
        bus     = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口，不可修改
        xoffset = 0                , -- X轴偏移
        yoffset = 0                , -- Y轴偏移
        freq    = 20000000         , -- spi时钟频率
        pinrst  = pio.P0_6         , -- reset，复位引脚
        pinrs   = pio.P0_1         , -- rs，命令/ 数据选择引脚/ 268开发板为15
        -- 初始化命令
        -- 前两个字节表示类型：0001表示延时，0000或者0002表示命令，0003表示数据
        -- 延时类型：后两个字节表示延时时间（单位毫秒）
        -- 命令类型：后两个字节命令的值
        -- 数据类型：后两个字节数据的值
        initcmd = {
            0x00010000 + 100, 0xEF, 0xEB, 0x00030014, 0xFE, 0xEF, 0xEB,
            0x00030014, 0x84, 0x00030040, 0x85, 0x000300FF, 0x86, 0x000300FF,
            0x87, 0x000300FF, 0x88, 0x0003000A, 0x89, 0x00030021, 0x8A,
            0x00030000, 0x8B, 0x00030080, 0x8C, 0x00030001, 0x8D, 0x00030001,
            0x8E, 0x000300FF, 0x8F, 0x000300FF, 0xB6, 0x00030000, 0x00030020,
            0x36, 0x00030008, 0x3A, 0x00030005, 0x90, 0x00030008, 0x00030008,
            0x00030008, 0x00030008, 0xBD, 0x00030006, 0xBC, 0x00030000, 0xFF,
            0x00030060, 0x00030001, 0x00030004, 0xC3, 0x00030013, 0xC4,
            0x00030013, 0xC9, 0x00030022, 0xBE, 0x00030011, 0xE1, 0x00030010,
            0x0003000E, 0xDF, 0x00030021, 0x0003000c, 0x00030002, 0xF0,
            0x00030045, 0x00030009, 0x00030008, 0x00030008, 0x00030026,
            0x0003002A, 0xF1, 0x00030043, 0x00030070, 0x00030072, 0x00030036,
            0x00030037, 0x0003006F, 0xF2, 0x00030045, 0x00030009, 0x00030008,
            0x00030008, 0x00030026, 0x0003002A, 0xF3, 0x00030043, 0x00030070,
            0x00030072, 0x00030036, 0x00030037, 0x0003006F, 0xED, 0x0003001B,
            0x0003000B, 0xAE, 0x00030077, 0xCD, 0x00030063, 0x70, 0x00030007,
            0x00030007, 0x00030004, 0x0003000E, 0x0003000F, 0x00030009,
            0x00030007, 0x00030008, 0x00030003, 0xE8, 0x00030034, 0x62,
            0x00030018, 0x0003000D, 0x00030071, 0x000300ED, 0x00030070,
            0x00030070, 0x00030018, 0x0003000F, 0x00030071, 0x000300EF,
            0x00030070, 0x00030070, 0x63, 0x00030018, 0x00030011, 0x00030071,
            0x000300F1, 0x00030070, 0x00030070, 0x00030018, 0x00030013,
            0x00030071, 0x000300F3, 0x00030070, 0x00030070, 0x64, 0x00030028,
            0x00030029, 0x000300F1, 0x00030001, 0x000300F1, 0x00030000,
            0x00030007, 0x66, 0x0003003C, 0x00030000, 0x000300CD, 0x00030067,
            0x00030045, 0x00030045, 0x00030010, 0x00030000, 0x00030000,
            0x00030000, 0x67, 0x00030000, 0x0003003C, 0x00030000, 0x00030000,
            0x00030000, 0x00030001, 0x00030054, 0x00030010, 0x00030032,
            0x00030098, 0x74, 0x00030010, 0x00030085, 0x00030080, 0x00030000,
            0x00030000, 0x0003004E, 0x00030000, 0x98, 0x0003003e, 0x00030007,
            0x35, 0x21, 0x11, 0x00010000 + 120, 0x29, 0x00010000 + 20
        },
        -- 休眠命令
        sleepcmd = {0x00020010},
        -- 唤醒命令
        wakecmd = {0x00020011}
    }
    pmd.ldoset(15, pmd.LDO_VLCD)            -- 屏幕
    lvgl.disp_init(para)
end

init()